/**
 * 1、在传统的 JavaScript 采用 function 方式来声明 对象
 * 2、与 ES6 中创建 实例 方式相同，使用 new 关键字可以创建实例
 * 3、为了区分 类 和 实例，我们会:
 *    用 对象(class-level) 来表示像Java语言中类一样的对象
 *    用 对象(instance-level) 或 实例 来表示像Java语言中实例一样的对象
 */

// 使用 function 关键字可以声明 对象(class-level)
// 同时这个对象也是一个 构造函数(constructor)
// 为了让 对象(class-level) 与 普通函数区分开:
// 我们人为 将 对象(class-level)名称 中每个单词首字母大写
function Monkey( monkeyId , monkeyName , monkeyGender ){
    // 在函数内部可以通过 this 关键字 为 将来创建的 实例(instance) 绑定属性
    this.id = monkeyId ;
    this.name = monkeyName ;
    this.gender = monkeyGender ;
    // 使用 "函数表达式" 声明函数并将其赋值到 某个属性中
    this.introduce = function(){
        console.log( '大家好，我是' + this.name );
    }
}

// 使用 "new 构造函数(参数)" 形式 可以创建 对象(class-level) 的 实例(instance)
let m1 = new Monkey( 1 , '孙悟空' , '男' );
console.log( m1 );

// 使用 "new 构造函数(参数)" 形式 可以创建 对象(class-level) 的 实例(instance)
let m2 = new Monkey( 2 , '孙行者' , '男' );
console.log( m2 );

console.log( m1 == m2 ) ; // false
console.log( m1 === m2 ) ; // false